/*******************************************************************************
* Copyright (c) 2009, 2010 Remy Chi Jian Suen and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Remy Chi Jian Suen <remy.suen@gmail.com> - initial API and implementation
* IBM - ongoing development
* David Green <dgreen99@gmail.com> - test for bug 301196
******************************************************************************/
package org.eclipse.ui.tests.fieldassist;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.expressions.EvaluationResult;
import org.eclipse.core.expressions.Expression;
import org.eclipse.core.expressions.ExpressionInfo;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.jface.tests.fieldassist.AbstractFieldAssistWindow;
import org.eclipse.ui.ISources;
import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.IHandlerActivation;
import org.eclipse.ui.handlers.IHandlerService;
public class TextContentAssistCommandAdapterTest extends
AbstractContentAssistCommandAdapterTest {
@Override
protected AbstractFieldAssistWindow createFieldAssistWindow() {
return new TextCommandFieldAssistWindow();
}
/**
* bug 301196: [FieldAssist] ContentAssistCommandAdapter should provide an activation expression when activating the command handler
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=301196
*
*/
public void testBug301196CorrectHandlerConflictResolution() throws Exception {
final boolean[] handlerInvocationIndicator = new boolean[] {false};
IHandlerService service = PlatformUI.getWorkbench().getService(IHandlerService.class);
IHandlerActivation handlerActivation = service.activateHandler(IWorkbenchCommandConstants.EDIT_CONTENT_ASSIST, new AbstractHandler() {
@Override
public Object execute(ExecutionEvent event) {
handlerInvocationIndicator[0] = true;
return null;
}
},new Expression() {
@Override
public void collectExpressionInfo(ExpressionInfo info) {
info.addVariableNameAccess(ISources.ACTIVE_SHELL_NAME);
}
@Override
public EvaluationResult evaluate(IEvaluationContext context) {
return EvaluationResult.TRUE; // always enabled
}
});
try {
getFieldAssistWindow().open();
sendFocusInToControl();
executeContentAssistHandler();
assertTwoShellsUp();
// The handler registered by the command adapter should win over the test handler.
assertFalse("test handler should not have been activated", handlerInvocationIndicator[0]);
} finally {
service.deactivateHandler(handlerActivation);
}
}
}